#ifndef ANIMATIONENGINE_H_
#define ANIMATIONENGINE_H_
#include "CAnimation.h"

class CAnimation;
class CAnimationEngine
{
	int m_ncurrentFrame;
	int m_nNumAni;
	int* m_pAniID;
	vector<CAnimation*> m_vAnimations;
	//vector<CAnimation*> m_vPlayingAnimations;
	//vector<int*> m_vRemoveAnimation;

	CAnimationEngine(void);
	~CAnimationEngine(void);
	CAnimationEngine& operator=(const CAnimationEngine&);
	CAnimationEngine(const CAnimationEngine&);
public:
	static CAnimationEngine* GetInstance(void);
	
	void Render();
	void Update(float dt);

	//////////////////////////////////////////////////////////////////////////////////////////////////////
	// Get and set number of animations
	///////////////////////////////////////////////////////////////////////////////////////////////////////
	int GetNum() { return m_nNumAni; }
	void SetNum(int num) { m_nNumAni = num; }

	//////////////////////////////////////////////////////////////////////////////////////////////////////
	// load in a file and send it its color key
	// filename = file to send in
	// red, green, blue = colors duh ;)
	///////////////////////////////////////////////////////////////////////////////////////////////////////
	int Load(char* filename, int red, int green, int blue);

	
	//////////////////////////////////////////////////////////////////////////////////////////////////////
	// Get access to all animations
	// i = index you want to get
	///////////////////////////////////////////////////////////////////////////////////////////////////////
	CAnimation* GetAnimations(unsigned int i);
	
	//////////////////////////////////////////////////////////////////////////////////////////////////////
	// Get access to the playing animations
	// i = index you want to get
	///////////////////////////////////////////////////////////////////////////////////////////////////////
	CAnimation* GetPlayingAnimations(unsigned int i);

	//////////////////////////////////////////////////////////////////////////////////////////////////////
	// Add and remove animations from the playing animations vector
	// AniID = index you want to add or remove
	///////////////////////////////////////////////////////////////////////////////////////////////////////
	//int* AddPlayingAnimations(int AniID, bool bFlipped);
	//void RemovePlayingAnimations(int* AniID);
	
	//////////////////////////////////////////////////////////////////////////////////////////////////////
	// Remove all playing animations from the playing animations vector
	///////////////////////////////////////////////////////////////////////////////////////////////////////
	void RemoveAll();

	//////////////////////////////////////////////////////////////////////////////////////////////////////
	// Sets the position of a playing animation
	// AniID = index you want to move
	// xpos, ypos = x,y positions
	///////////////////////////////////////////////////////////////////////////////////////////////////////
	void SetAniInfo(int AniID, int xpos, int ypos);

	/*int GetPlayingAniSize(){return m_vPlayingAnimations.size();}*/
};

#endif